/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tpv;

/**
 *
 * @author david
 */
public class ReglaTarjeta extends ReglaAbstracta
{
    public ReglaTarjeta(double porcentaje)
    {
	super(porcentaje);
    }

    @Override
    public boolean isAplicable(Venta venta)
    {
	return super.isAplicable(venta) && venta.hasTarjeta();
    }

    @Override
    public double aplicar(Venta venta)
    {
	if (isAplicable(venta))
	{
	    for (LinVenta lv : venta.getLineas())
	    {
		lv.setDescuento(porcentaje);
	    }

	    return porcentaje;
	}

	return Regla.SIN_DESCUENTO;
    }

    public static void main(String[] args)
    {
	ReglaTarjeta rt = new ReglaTarjeta(0.15);

	Producto p1 = new Producto("a", "a", 15);
	Producto p2 = new Producto("b", "b", 50);
	Producto p3 = new Producto("c", "c", 77);

	LinVenta l1 = new LinVenta(p1, 3);
	LinVenta l2 = new LinVenta(p2, 4);
	LinVenta l3 = new LinVenta(p3, 2);
	LinVenta l4 = new LinVenta(p1, 3);
	LinVenta l5 = new LinVenta(p2, 4);
	LinVenta l6 = new LinVenta(p3, 2);

	Fecha f1 = new Fecha("J", 11, 38);
	Fecha f2 = new Fecha("X", 9, 0);

	Venta v1 = new Venta(false, false, f1);
	Venta v2 = new Venta(false, true, f2);

	v1.anyadirLinVenta(l1);
	v1.anyadirLinVenta(l2);
	v1.anyadirLinVenta(l3);

	v2.anyadirLinVenta(l4);
	v2.anyadirLinVenta(l5);
	v2.anyadirLinVenta(l6);

	rt.aplicar(v1);

	System.out.println("Venta 1");
	System.out.println("-------");

	for (LinVenta lv : v1.getLineas())
	{
	    Producto p = lv.getItem();
	    System.out.println("Producto: " + p.getCodigo());
	    System.out.println("Precio Unitario: " + p.getPrecio());
	    System.out.println("Cantidad: " + lv.getCantidad());
	    System.out.println("Descuento: " + lv.getDescuento());
	    System.out.println("Precio: " + (p.getPrecio() * lv.getCantidad() -
					     lv.getDescuento()));
	    System.out.println();
	}

	rt.aplicar(v2);

	System.out.println("Venta 2");
	System.out.println("-------");

	for (LinVenta lv : v2.getLineas())
	{
	    Producto p = lv.getItem();
	    System.out.println("Producto: " + p.getCodigo());
	    System.out.println("Precio Unitario: " + p.getPrecio());
	    System.out.println("Cantidad: " + lv.getCantidad());
	    System.out.println("Descuento: " + lv.getDescuento());
	    System.out.println("Precio: " + (p.getPrecio() * lv.getCantidad() -
					     lv.getDescuento()));
	    System.out.println();
	}
    }

}
